
#ifndef SEMANTICS_CONTEXT_H

#define SEMANTICS_CONTEXT_H

#include <stdio.h>
#include "generic_table.h"
#include "syntax_tree.h"


class SemanticsUsingDirective
{
public:
	SemanticsUsingDirective();
	~SemanticsUsingDirective();

	GenericTable<int> * Names;
	int Alias;

	void RecognizeDirective(SyntaxTreeNode * usingNode);

#ifdef DEBUG
	void DebugXMLOutput(FILE * fo);
#endif
};


class SemanticsContext
{
public:
	SemanticsContext();
	~SemanticsContext();

	int ParentContext;
	GenericTable<SemanticsUsingDirective> * UsingDirectives;

	void GatherFromUsingDirectives(SyntaxTreeNode * usingDirectivesNode, int parentContext);

#ifdef DEBUG
	void DebugXMLOutput(FILE * fo);
#endif
};

#endif